
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<HTML>

<HEAD>
   <TITLE>invert_c</TITLE>
</HEAD>

<BODY style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
<A name="TOP"></A>

<table style="text-align: left; margin-left: auto; margin-right: auto; width: 800px;"
 border="0" cellpadding="5" cellspacing="2">
  <tbody>
    <tr>
      <td style="background-color: rgb(153, 153, 153); vertical-align: middle; text-align: center;">
      <div align="right"> 
      <small><small><a href="index.html">Index Page</a></small></small>
      </div>
      <b>invert_c</b> </td>
    </tr>

    <tr>
      <td style="vertical-align: top;">

<small><div align="center">
<A HREF="index.html#A">A</A>&nbsp;
<A HREF="index.html#B">B</A>&nbsp;
<A HREF="index.html#C">C</A>&nbsp;
<A HREF="index.html#D">D</A>&nbsp;
<A HREF="index.html#E">E</A>&nbsp;
<A HREF="index.html#F">F</A>&nbsp;
<A HREF="index.html#G">G</A>&nbsp;
<A HREF="index.html#H">H</A>&nbsp;
<A HREF="index.html#I">I</A>&nbsp;
<A HREF="index.html#J">J</A>&nbsp;
<A HREF="index.html#K">K</A>&nbsp;
<A HREF="index.html#L">L</A>&nbsp;
<A HREF="index.html#M">M</A>&nbsp;
<A HREF="index.html#N">N</A>&nbsp;
<A HREF="index.html#O">O</A>&nbsp;
<A HREF="index.html#P">P</A>&nbsp;
<A HREF="index.html#Q">Q</A>&nbsp;
<A HREF="index.html#R">R</A>&nbsp;
<A HREF="index.html#S">S</A>&nbsp;
<A HREF="index.html#T">T</A>&nbsp;
<A HREF="index.html#U">U</A>&nbsp;
<A HREF="index.html#V">V</A>&nbsp;
<A HREF="index.html#W">W</A>&nbsp;
<A HREF="index.html#X">X</A>&nbsp;
</div></small>
       <br>
       <table style="text-align: left; width: 60%; margin-left: auto; margin-right: auto;"
       border="0" cellspacing="2" cellpadding="2">
        <tbody>
          <tr>
            <td style="width: 50%; text-align: center;">
            <small>
              <a href="#Procedure">Procedure<br></a>
              <a href="#Abstract">Abstract<br></a>
              <a href="#Required_Reading">Required_Reading<br></a>
              <a href="#Keywords">Keywords<br></a>
              <a href="#Brief_I/O">Brief_I/O<br></a>
              <a href="#Detailed_Input">Detailed_Input<br></a>

              </small>
              </td>
              <td style="vertical-align: top; width: 50%; text-align: center;">
              <small>               <a href="#Detailed_Output">Detailed_Output<br></a>
              <a href="#Parameters">Parameters<br></a>
              <a href="#Exceptions">Exceptions<br></a>
              <a href="#Files">Files<br></a>
              <a href="#Particulars">Particulars<br></a>
              <a href="#Examples">Examples<br></a>

              </small>
              </td>
              <td style="vertical-align: top; width: 50%; text-align: center;">
              <small>               <a href="#Restrictions">Restrictions<br></a>
              <a href="#Literature_References">Literature_References<br></a>
              <a href="#Author_and_Institution">Author_and_Institution<br></a>
              <a href="#Version">Version<br></a>
              <a href="#Index_Entries">Index_Entries<br></a>
             </small>
            </td>
          </tr>
        </tbody>
</table>

<h4><a name="Procedure">Procedure</a></h4>
<PRE>
   void invert_c ( ConstSpiceDouble  m1  [3][3],
                   SpiceDouble       mout[3][3] ) 

</PRE>
<h4><a name="Abstract">Abstract</a></h4>
<PRE>
 
   Generate the inverse of a 3x3 matrix. 
 </PRE>
<h4><a name="Required_Reading">Required_Reading</a></h4>
<PRE>
 
   None. 
 </PRE>
<h4><a name="Keywords">Keywords</a></h4>
<PRE>
 
   MATRIX,  MATH 
 

</PRE>
<h4><a name="Brief_I/O">Brief_I/O</a></h4>
<PRE>
 
   VARIABLE  I/O  DESCRIPTION 
   --------  ---  -------------------------------------------------- 
   m1         I   Matrix to be inverted. 
   mout       O   Inverted matrix (m1)**-1.  If m1 is singular, then 
                  mout will be the zero matrix.   mout can 
                  overwrite m1. 
 </PRE>
<h4><a name="Detailed_Input">Detailed_Input</a></h4>
<PRE>
 
   m1    An arbitrary 3x3 matrix.  The limits on the size of 
         elements of m1 are determined by the process of calculating 
         the cofactors of each element of the matrix.  For a 3x3 
         matrix this amounts to the differencing of two terms, each 
         of which consists of the multiplication of two matrix 
         elements.  This multiplication must not exceed the range 
         of double precision numbers or else an overflow error will 
         occur. 
 </PRE>
<h4><a name="Detailed_Output">Detailed_Output</a></h4>
<PRE>
 
   mout  is the inverse of m1 and is calculated explicitly using 
         the matrix of cofactors.  mout is set to be the zero matrix 
         if m1 is singular. 
 </PRE>
<h4><a name="Parameters">Parameters</a></h4>
<PRE>
 
   None. 
 </PRE>
<h4><a name="Exceptions">Exceptions</a></h4>
<PRE>
 
   1) No internal checking on the input matrix m1 is performed except on 
      the size of its determinant.  Thus it is possible to generate a 
      floating point overflow or underflow in the process of 
      calculating the matrix of cofactors.
 
   2) If the determinant is less than 10**-16, the matrix is deemed to 
      be singular and the output matrix is filled with zeros.
      </PRE>
<h4><a name="Files">Files</a></h4>
<PRE>
 
   None 
 </PRE>
<h4><a name="Particulars">Particulars</a></h4>
<PRE>
 
   A temporary matrix is used to compute the result, so the output 
   matrix may overwrite the input matrix.   
 </PRE>
<h4><a name="Examples">Examples</a></h4>
<PRE>
 
   Suppose that m1 is given by the following matrix equation: 
 
           | 0   -1    0 | 
      m1 = | 0.5  0    0 |   
           | 0    0    1 |     
 
   If <b>invert_c</b> is called as shown 
   
      <b>invert_c</b> (m1, m1); 
 
   then m1 will be set to be: 
 
           | 0    2    0 | 
      m1 = |-1    0    0 | 
           | 0    0    1 | 
 </PRE>
<h4><a name="Restrictions">Restrictions</a></h4>
<PRE>
 
   The input matrix must be such that generating the cofactors will 
   not cause a floating point overflow or underflow.  The 
   strictness of this condition depends, of course, on the computer 
   installation and the resultant maximum and minimum values of 
   double precision numbers. 
 </PRE>
<h4><a name="Literature_References">Literature_References</a></h4>
<PRE>
 
   None 
 </PRE>
<h4><a name="Author_and_Institution">Author_and_Institution</a></h4>
<PRE>
 
   W.M. Owen       (JPL) 
 </PRE>
<h4><a name="Version">Version</a></h4>
<PRE>
 
  -CSPICE Version 1.0.0, 13-SEP-1999 (NJB) (WMO)
</PRE>
<h4><a name="Index_Entries">Index_Entries</a></h4>
<PRE>
 
   invert a 3x3_matrix 
 </PRE>
<h4>Link to routine invert_c source file <a href='../../../src/cspice/invert_c.c'>invert_c.c</a> </h4>

      </td>
    </tr>
  </tbody>
</table>

   <pre>Wed Jun  9 13:05:25 2010</pre>

</body>
</html>

